home *** CD-ROM | disk | FTP | other *** search
/ Aminet 8 / Aminet 8 (1995)(GTI - Schatztruhe)[!][Oct 1995].iso / Aminet / dev / c / cmacros.lha / cmacros.h < prev    next >
Text File  |  1995-07-03  |  2KB  |  50 lines

  1. /******************************************************************************
  2. ** cmacros.h                                                                 **
  3. **---------------------------------------------------------------------------**
  4. ** Collection of useful C-macros                                             **
  5. **---------------------------------------------------------------------------**
  6. ** Version : V 1.0                                                           **
  7. ** Date    : 03.07.1995                                                      **
  8. ** Author  : Stefan Kost                                                     **
  9. ******************************************************************************/
  10.  
  11. /* Bitmanipulation Macros */
  12. /* n ist the variable to work with */
  13. /* m ist the bitposition to change */
  14. /* BitClr(11,0) => 10 ; this clear the lowest bit in the number 11 */
  15.  
  16. #define BitSet(n,m)            ( n|(1L<<m) )
  17. #define BitClr(n,m)            ( n&~(1L<<m) )
  18. #define BitTest(n,m)        ( n&(1L<<m)>>m )
  19. #define BitToggle(n,m)        ( (n&(1L<<m)>>m) ? (n&~(1L<<m)) : (n|(1L<<m)) )
  20.  
  21. /* Variable Swapping */
  22. /* swaps the contents of variable a with b and uses c as buffer */
  23. /* all variables should have the same typ */
  24.  
  25. #define Swap(a,b,c)            c=a;a=b;b=c;
  26.  
  27. /* Rangechecking */
  28. /* check if a is larger than lo and smaller than hi */
  29. /* RangeX : bounds are excluded, RangeI : bounds are included */
  30.  
  31. #define RangeX(a,lo,hi)        ( (a>hi ? hi : a)<lo ? lo : (a>hi ? hi : a) )
  32. #define RangeI(a,lo,hi)        ( (a>=hi ? hi : a)<=lo ? lo : (a>=hi ? hi : a) )
  33.  
  34. /* Odd/Even-Check */
  35. /* simply check if a given number is odd or even */
  36.  
  37. #define Odd(a)                ( a&1L )
  38. #define Even(a)                ( !(a&1L) )
  39.  
  40. /* Endianconversion */
  41. /* converts between motorola`s and intel`s (buuuh) number format */
  42.  
  43. #define LitEnd2BigEnd_16(w)    ( (w&0xFF)<<8 | (w&0xFF00)>>8 )
  44. #define LitEnd2BigEnd_32(l)    ( (l&0xFF)<<24 | (l&0xFF00)<<8 | (l&0xFF0000)>>8 | (l&0xFF000000)>>24 )
  45.  
  46. /* IFF-Handling */
  47. /* generates chunk-ID`s for iff-files */
  48.  
  49. #define MakeID(a,b,c,d)        ( (LONG)(a)<<24L | (LONG)(b)<<16L | (c)<<8 | (d) )
  50.